<?php

namespace app\api\controller;

use Firebase\JWT\JWT;

use Firebase\JWT\Key;
use think\admin\Controller;

class TokenService
{
    public function __construct()
    {
       // $token = $this->request->post('token','');

    }
    public function generateToken($user_id)
    {
        // 设置密钥
        $key = 'wh_xcx_secret_key';
        // 准备 payload 数据
        $payload = [
            'iss' => 'issuer', // 签发者
            'aud' => 'audience', // 接收者
            'iat' => time(), // 签发时间
            'exp' => time() + 86400*30, // 过期时间，这里设置为1小时后
            'data' => [
                'user_id' => $user_id, // 自定义的用户 ID 等数据
            ]
        ];
        // 生成 JWT
        $jwt = JWT::encode($payload, $key, 'HS256');
        return $jwt;
    }

    public function verifyToken($receivedJwt)
    {
        $key = 'wh_xcx_secret_key';
        try {
            $decoded = JWT::decode($receivedJwt, new Key($key, 'HS256'));
            // JWT 验证成功，可以从解码后的对象中获取数据
             $user_id = $decoded->data->user_id;
            return $user_id;
        } catch (\Exception $e) {
            // JWT 验证失败
            // echo "验证失败：".$e->getMessage();
            return false;
        }
    }
}